package com.zhentao.day03.am;

class Person{
  public static double PI = 3.14 ;
}


//动物类
public class Animal {
  // 静态代码块 :
  // 是方法区加载类时需要执行的代码, 比如说初始化静态变量, 调用静态方法
  static double PI;
  static {
    PI = 3.1415 ;
    // run();
    System.out.println("static 静态代码块挂靠");
  }
  // 构造器 : 构造方法
  // 构造方法1 : 方法名必须与类名相同
  // 构造方法2 : 方法是没有返回值
  // 构造方法3 : 每个类如果没有声明构造器, 系统会提供一个默认的无参的构造器。
  //            如果写出了构造器, 那么,系统就不再提供默认的构造器。
  public Animal (int age){
    this.age = age ;
  }

  public Animal (){
    System.out.println("构造方法执行");
  }

  // new Animal () ;


  // static {}  等价于   {}


  // 成员变量
  static String MONKEY = "猴子";
  int age ;
  // 在一个类里面的访问, 类名是可以省略的。
  // 动态 -> 行为 静态 -> 每个动物都固有动作。
  // 成员方法
  public static void run (){
    System.out.println( MONKEY + "在跑");
  }
  // 普通方法必须是 new 之后, 才会有。
  public void sleep () {
    System.out.println( age + "岁的" + MONKEY + "在睡觉");
  }
}
